package com.wanger.swc.config.myBatisPlus.autoDDL.model;

import com.wanger.swc.exception.BusEx;
import com.wanger.swc.util.validation.MyVerifyUtil;
import lombok.Getter;
import org.anyline.metadata.type.DatabaseType;

import java.sql.Driver;

/**
 * @Author: wanger
 * @Date: 2024/10/4 22:00
 * @Description: 数据库类型
 */
@Getter
public class MyDBType implements ContentTypeInfo {

    /**
     * 数据库类型
     */
    private final DatabaseType dbType;

    /**
     * 驱动类，手动放置驱动类，手动确认所需驱动类已正确引入
     */
    private final Class<? extends Driver> driveType;

    /**
     * 创建数据库类型
     *
     * @param driveType 显示放置驱动类名称
     * @param dbType    数据库类型
     */
    public MyDBType(Class<? extends Driver> driveType, DatabaseType dbType) {
        MyVerifyUtil.nullVerify(driveType, "数据库驱动名称不能为空！");
        MyVerifyUtil.nullVerify(dbType, "数据库类型不能为空！");
        if (DatabaseType.NONE.equals(dbType)) BusEx.throwEx("不支持该数据库类型！");
        this.driveType = driveType;
        this.dbType = dbType;
    }

    @Override
    public String getType() {
        return dbType.name();
    }

    @Override
    public String getDesc() {
        return dbType.title();
    }
}
